package com.chenxy.user.center.config;

import com.chenxy.common.config.BaseSwagger2Config;
import com.chenxy.user.center.constant.UserCenterConstant;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * 常见注解描述：
 *     @Api：修饰整个类，描述Controller的作用，与tags搭配使用
 *     @ApiOperation：描述一个类的一个方法，或者说一个接口
 *     @ApiParam：单个参数描述
 *     @ApiModel：用对象来接收参数
 *     @ApiProperty：用对象接收参数时，描述对象的一个字段
 *     @ApiResponse：HTTP响应其中1个描述
 *     @ApiResponses：HTTP响应整体描述
 *     @ApiIgnore：使用该注解忽略这个API
 *     @ApiError ：发生错误返回的信息
 *     @ApiImplicitParam：描述一个请求参数，可以配置参数的中文含义，还可以给参数设置默认值
 *     @ApiImplicitParams：描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表
 *
 *     访问地址 http://localhost:9000/swagger-ui.html
 */
@Configuration
@EnableSwagger2  // 允许使用swagger2
public class Swagger2Config extends BaseSwagger2Config {

    @Bean
    public Docket createRestApi(Environment environment) {
        // 配置 default/dev/test 环境可用，其他环境不可用
        String[] profilesRange = {"default", "dev", "test"};
        ApiInfo apiInfo = apiInfo();
        return super.createRestApi(environment, UserCenterConstant.USER_CENTER_NAME,apiInfo,profilesRange);
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("用户中心接口文档")                      // 设置文档的标题
                .description("用户中心 接口文档")               // 设置文档的描述
                .version("V0.0.1")                           // 设置文档的版本信息
                .termsOfServiceUrl("https://gitee.com/sleepwellzzzz/user-center") // 设置文档的License信息->1.3 License information
                .build();
    }

}
